home *** CD-ROM | disk | FTP | other *** search
/ PC Answers 1996 December / PC Answers December 1996.iso / create / corelcad / cad / aborder.csc next >
Encoding:
Text File  |  1996-04-26  |  10.0 KB  |  354 lines

  1. 'This program draws Imperial and Metric title blocks
  2. '            for standard sized paper.
  3. 'Program:        AutoBorder
  4. 'Written by:    Richard Kyle - Foretech Graphics 
  5. 'Date:        March 29th, 1996
  6. 'Revised:        April 23rd, 1996
  7. 'Tested on:    CorelCAD Release Candidate 2 - 1.00.107 
  8. 'Internet:    http://www.fore-tech.com
  9. 'E-Mail:        rskyle@fore-tech.com or rkyle@msn
  10. '
  11. 'Description:    This porgrams draws Imperial and Metric title blocks
  12. '            for standard sized paper.  The 'DIALOG BOX DEFAULTS' can
  13. '            easily be customized for your own use.
  14.  
  15.  
  16. '**** DIALOG BOX DEFAULTS ****
  17. cmbPaper$="A"
  18. chkDrawPaper%=1
  19. chkBinding%=1
  20. chkGroup%=0
  21. txtScale$="1:1"
  22. txtCompany$="FORETECH GRAPHICS"
  23. txtDrawNumb$="1"
  24. txtDrawName$="DRAWING NAME"
  25. txtDrawnby$="RICHARD KYLE"
  26. txtCheckby$="NONE"
  27. txtXOffset$="0"
  28. txtYOffset$="0"
  29. txtDate$=CurrDate
  30. optOrientation%=0
  31.  
  32. '**** DECLARATIONS ****
  33. DIM PSize(0 to 10) as string
  34. DIM Px(0 to 10) as single 'PAPER X SIZE
  35. DIM Py(0 to 10) as single 'PAPER Y SIZE
  36. DIM Bs(0 to 10) as single 'BOREDER SIZE
  37. DIM Bo(0 to 10) as single 'BINDING OFFSET
  38. DIM M(0 to 10) as single  'METRIC (1 = TRUE)
  39. DIM cmbPaper$
  40. DIM ButtonPressed%
  41. DIM cur%
  42. DIM Tx(0 to 1) as single
  43. DIM Ty(0 to 1) as single
  44. DIM L1(0 to 1) as single
  45. DIM L2(0 to 1) as single
  46. DIM L3(0 to 1) as single
  47. DIM SP(0 to 1) as single
  48. DIM tb(0 to 1) as single
  49. DIM nw(0 to 1) as single
  50. DIM fs(0 to 1) as single
  51.  
  52. '**** PAPER and BORDER SIZE TABLE ****
  53. 'Imperial
  54. PSize(0)="A": Px(0)=11.00 :Py(0)= 8.50: Bs(0)=0.25  :Bo(0)= 1.0 : M(0)=0
  55. PSize(1)="B": Px(1)=17.00 :Py(1)=11.00: Bs(1)=0.25  :Bo(1)= 1.0 : M(1)=0
  56. PSize(2)="C": Px(2)=22.00 :Py(2)=17.00: Bs(2)=0.375 :Bo(2)= 1.0 : M(2)=0
  57. PSize(3)="D": Px(3)=34.00 :Py(3)=22.00: Bs(3)=0.5   :Bo(3)= 1.0 : M(3)=0
  58. PSize(4)="E": Px(4)=44.00 :Py(4)=34.00: Bs(4)=0.5   :Bo(4)= 1.0 : M(4)=0
  59.  
  60. 'Metric
  61. PSize(5)="A4": Px(5)= 297 :Py(5)= 210 : Bs(5)= 10   :Bo(5)= 20  : M(5)=1
  62. PSize(6)="A3": Px(6)= 420 :Py(6)= 297 : Bs(6)= 10   :Bo(6)= 20  : M(6)=1
  63. PSize(7)="A2": Px(7)= 594 :Py(7)= 420 : Bs(7)= 10   :Bo(7)= 20  : M(7)=1
  64. PSize(8)="A1": Px(8)= 841 :Py(8)= 594 : Bs(8)= 10   :Bo(8)= 20  : M(8)=1
  65. PSize(9)="A0": Px(9)=1189 :Py(9)= 841 : Bs(9)= 10   :Bo(9)= 20  : M(9)=1
  66.  
  67. for Cur=0 to 9
  68.     PSize(Cur)=PSize(Cur) & "  -  " & Cstr(px(cur)) & " x " & Cstr(py(cur))
  69. next cur
  70.  
  71. '**** TITLE BLOCK SIZES ****
  72. 'IMPERIAL  :METRIC
  73. Tx(0)=5    :Tx(1)=150
  74. Ty(0)=1.5  :Ty(1)=45
  75. L1(0)=1.0     :L1(1)=30
  76. L2(0)=0.5     :L2(1)=15
  77. L3(0)=0.25 :L3(1)=7.5
  78. SP(0)=0.05 :SP(1)=1.5
  79. tb(0)=0.75 :tb(1)=20
  80. nw(0)=1    :nw(1)=30
  81. fs(0)=.15  :fs(1)=4.5
  82.  
  83.  
  84. '**** OTHER CONSTANTS ****
  85. nl=chr$(13) & chr$(10)
  86. about$=about$ & "Program:        AutoBorder" & nl
  87. about$=about$ & "Written by:     Richard Kyle - Foretech Graphics" & nl
  88. about$=about$ & "Date:            March 29th, 1996" & nl
  89. about$=about$ & "Phone:         (604) 983-8753" & nl
  90. about$=about$ & "Fax:           (604) 983-8762" & nl
  91. about$=about$ & "Internet:       http://www.fore-tech.com" & nl
  92. about$=about$ & "E-Mail:        rskyle@fore-tech.com / rkyle@msn"
  93.  
  94. '**** DEFINE DIALOG BOXES ****
  95. BEGIN DIALOG diaAbout 210, 100, "About AutoBorder"
  96.     TEXT  15, 5, 200, 60, about$
  97.     OKBUTTON  85, 75, 40, 14
  98. END DIALOG
  99.  
  100. cur = 0
  101.  
  102. BEGIN DIALOG diaBorder 200, 206, "AutoBorder by Foretech Graphics"
  103.     DDLISTBOX  6, 16, 96, 102, PSize, Cur%                        'This type of dialogue box eliminates the need for error traps of user input
  104.     OPTIONGROUP optOrientation%
  105.         OPTIONBUTTON  122, 10, 48, 8, "Landscape"
  106.         OPTIONBUTTON  122, 20, 48, 8, "Portrait"
  107.     TEXTBOX  5, 40, 60, 12, txtXOffset$
  108.     TEXTBOX  70, 40, 60, 12, txtYOffset$
  109.     CHECKBOX  5, 59, 54, 11, "Draw Paper", chkDrawPaper%
  110.     CHECKBOX  70, 59, 54, 11, "Add Binding", chkBinding%
  111.     CHECKBOX  135, 59, 54, 11, "Group All", chkGroup%
  112.     TEXTBOX  5, 83, 190, 13, txtCompany$
  113.     TEXTBOX  5, 108, 40, 14, txtDrawNumb$
  114.     TEXTBOX  55, 108, 140, 14, txtDrawName$
  115.     TEXTBOX  5, 132, 90, 14, txtScale$
  116.     TEXTBOX  105, 132, 90, 13, txtDrawnBy$
  117.     TEXTBOX  5, 159, 90, 13, txtDate$
  118.     TEXTBOX  105, 159, 90, 13, txtCheckBy$
  119.     PUSHBUTTON  5, 183, 60, 13, "About"
  120.     CANCELBUTTON  70, 183, 60, 13
  121.     OKBUTTON  135, 183, 60, 13
  122.     TEXT  5, 6, 104, 8, "Paper Size"
  123.     TEXT  5, 75, 82, 8, "Company Name:"
  124.     TEXT  55, 100, 82, 8, "Drawing Name:"
  125.     TEXT  5, 100, 34, 8, "Dwg. #:"
  126.     TEXT  5, 124, 40, 8, "Scale:"
  127.     TEXT  105, 124, 40, 8, "Drawn By:"
  128.     TEXT  5, 151, 40, 8, "Date:"
  129.     TEXT  105, 151, 60, 8, "Checked By:"
  130.     TEXT  5, 32, 40, 8, "X Offset:"
  131.     TEXT  70, 32, 40, 8, "Y Offset:"
  132. END DIALOG
  133.  
  134. 'SHOW MAIN DIALOG
  135. ButtonPressed=dialog(diaBorder)
  136.  
  137. 'IF THE USER CHOOSES ABOUT THEN REDISPLAY MAIN DIALOG
  138. while ButtonPressed=3
  139.     ButtonPressed=dialog(diaabout)
  140.     ButtonPressed=dialog(diaBorder)
  141. wend
  142.  
  143. Select Case ButtonPressed
  144.     case 1 'OK
  145.  
  146.         
  147.         'CHOOSE metric / IMPERIAL
  148.         metric%=m(cur)
  149.  
  150.         'SET PAPER OFFSET
  151.         P1x=val(txtXOffset$)
  152.         P1y=val(txtYOffset$)
  153.  
  154.         'SET PAPER ORIENTATION
  155.         if optOrientation% = 1 then
  156.             P2x=P1x + Py(cur)
  157.             P2y=P1y + Px(cur)
  158.         else
  159.             P2x=P1x + Px(cur)
  160.             P2y=P1y + Py(cur)
  161.         endif
  162.  
  163.  
  164.         'SET BORDER SIZES
  165.         B1y=P1y+Bs(cur)
  166.         B2y=P2y-Bs(cur)
  167.         B2x=P2x-Bs(cur)
  168.  
  169.         'ADD BINDING OFFSET
  170.         if chkBinding% = 1 then
  171.             B1x=P1x+Bo(cur)
  172.         else
  173.             B1x=P1x+Bs(cur)
  174.         endif
  175.  
  176.         'COL LOCATIONS
  177.         co1=B2x-Tx(metric)
  178.         co2=B2x-tx(metric)/2
  179.         co3=B2x-Tx(metric)+Nw(metric)
  180.         co4=B2x
  181.  
  182.         'TEXT LOCATIONS
  183.         tx1=co1+Tb(metric)
  184.         tx2=co2+Tb(metric)
  185.  
  186.         'ROW LOCATIONS
  187.         rw0=B1y+Ty(metric)
  188.         rw1=B1y+L1(metric)
  189.         rw2=B1y+L2(metric)
  190.         rw3=B1y+L3(metric)
  191.         rw4=B1y
  192.  
  193.  
  194.         'CREATE LINK TO CORELCAD
  195.         WITHOBJECT "CorelCAD.Automation.1"
  196.  
  197.         'CREATE LAYER
  198.         if chkGroup% = 0 then
  199.             .NewLayer .LayerName="Paper",  .Red=0, .Green=0, .Blue=0,.Printable=false,  .LineStyle=1, .Description="Paper"
  200.             .SetCurrentLayer .LayerName="Paper"
  201.         endif
  202.  
  203.         'DRAW PAPER
  204.         if chkDrawPaper% = 1 then
  205.             .StartAddCmdPoint 5
  206.             .AddCmdPoint P1x, P1y, 0.0
  207.             .AddCmdPoint P2x, P1y, 0.0
  208.             .AddCmdPoint P2x, P2y, 0.0
  209.             .AddCmdPoint P1x, P2y, 0.0
  210.             .AddCmdPoint P1x, P1y, 0.0
  211.             .EndAddCmdPoint
  212.             .PolyLine
  213.             .ApplyName "Border"
  214.         end if
  215.  
  216.         'CREATE LAYER
  217.         if chkGroup% = 0 then
  218.             .NewLayer .LayerName="Border", .Red=255, .Green=0, .Blue=0, .LineStyle=6, .Description="Border Layer"
  219.             .SetCurrentLayer .LayerName="Border"
  220.         endif
  221.  
  222.         'DRAW BORDER
  223.         .StartAddCmdPoint 5
  224.         .AddCmdPoint B1x, B1y, 0.0
  225.         .AddCmdPoint B2x, B1y, 0.0
  226.         .AddCmdPoint B2x, B2y, 0.0
  227.         .AddCmdPoint B1x, B2y, 0.0
  228.         .AddCmdPoint B1x, B1y, 0.0
  229.         .EndAddCmdPoint
  230.         .PolyLine
  231.         .ApplyName "Border"
  232.  
  233.  
  234.         'DRAW TITLE BLOCK
  235.         .StartAddCmdPoint 3
  236.         .AddCmdPoint B2x, rw0, 0.0
  237.         .AddCmdPoint co1, rw0, 0.0
  238.         .AddCmdPoint co1, rw4, 0.0
  239.         .EndAddCmdPoint
  240.         .PolyLine
  241.         .ApplyName "Border"
  242.  
  243.         'DRAW HORIZONTAL SEPERATORS
  244.         .StartAddCmdPoint 2
  245.         .AddCmdPoint co1, rw3, 0.0
  246.         .AddCmdPoint co4, rw3, 0.0
  247.         .EndAddCmdPoint
  248.         .PolyLine
  249.         .ApplyName "Border"
  250.         
  251.         .StartAddCmdPoint 2
  252.         .AddCmdPoint co1, rw2, 0.0
  253.         .AddCmdPoint co4, rw2, 0.0
  254.         .EndAddCmdPoint
  255.         .PolyLine
  256.         .ApplyName "Border"
  257.  
  258.         .StartAddCmdPoint 2
  259.         .AddCmdPoint co1, rw1, 0.0
  260.         .AddCmdPoint co4, rw1, 0.0
  261.         .EndAddCmdPoint
  262.         .PolyLine
  263.         .ApplyName "Border"
  264.  
  265.  
  266.         'DRAW VERTICAL SEPERATORS
  267.         .StartAddCmdPoint 2
  268.         .AddCmdPoint Co2, rw2, 0.0
  269.         .AddCmdPoint Co2, rw3, 0.0
  270.         .EndAddCmdPoint
  271.         .PolyLine
  272.         .ApplyName "Border"
  273.  
  274.         .StartAddCmdPoint 2
  275.         .AddCmdPoint Co2, rw3, 0.0
  276.         .AddCmdPoint Co2, rw4, 0.0
  277.         .EndAddCmdPoint
  278.         .PolyLine
  279.         .ApplyName "Border"
  280.  
  281.         .StartAddCmdPoint 2
  282.         .AddCmdPoint Co3, rw1, 0.0
  283.         .AddCmdPoint Co3, rw2, 0.0
  284.         .EndAddCmdPoint
  285.         .PolyLine
  286.         .ApplyName "Border"
  287.  
  288.         'ADD TITLE BLOCK LABELS
  289.         .Text3D .text="SCALE:", .font="Arial", .size=FS(metric), .Justification=0,.Style=0,.angle=0, .x1=co1+sp(metric), .y1=rw3+sp(metric), .z1=0
  290.         .ApplyName "Border"
  291.         .Text3D .text="DN BY:", .font="Arial", .size=FS(metric), .Justification=0,.Style=0,.angle=0, .x1=co2+sp(metric), .y1=rw3+sp(metric), .z1=0
  292.         .ApplyName "Border"
  293.         .Text3D .text="DATE:",  .font="Arial", .size=FS(metric), .Justification=0,.Style=0,.angle=0, .x1=co1+sp(metric), .Y1=rw4+sp(metric), .Z1=0
  294.         .ApplyName "Border"
  295.         .Text3D .text="CH BY:", .font="Arial", .size=FS(metric), .Justification=0,.Style=0,.angle=0, .x1=co2+sp(metric), .Y1=rw4+sp(metric), .Z1=0
  296.         .ApplyName "Border"
  297.  
  298.         'CREATE LAYER
  299.         if chkGroup% = 0 then
  300.             .NewLayer .LayerName="Title",  .Red=0, .Green=0, .Blue=0, .LineStyle=1, .Description="Title Block Text"
  301.             .SetCurrentLayer .LayerName="Title"
  302.         endif
  303.         
  304.         'ADD TITLE BLOCK TEXT
  305.         if txtCompany$<>"" then
  306.             .Text3D .text=txtCompany$,  .font="Arial", .size=FS(metric)*2, .Justification=1,.Style=0,.angle=0, .X1=co2, .Y1=rw1+sp(metric)*2, .Z1=0
  307.             .ApplyName "Border"
  308.         endif
  309.  
  310.         if txtDrawName$ <>"" then
  311.             .Text3D .text=txtDrawName$, .font="Arial", .size=FS(metric)*2, .Justification=1,.Style=0,.angle=0, .X1=co2+(NW(metric)/2), .Y1=rw2+sp(metric)*2, .Z1=0
  312.             .ApplyName "Border"
  313.         endif
  314.  
  315.         if txtDrawNumb$<>"" then
  316.             .Text3D .text=txtDrawNumb$, .font="Arial", .size=FS(metric)*2, .Justification=1,.Style=0,.angle=0, .X1=co1+(NW(metric)/2), .Y1=rw2+sp(metric)*2, .Z1=0
  317.             .ApplyName "Border"
  318.         endif
  319.  
  320.         if txtScale$<>"" then
  321.             .Text3D .text=txtScale$,    .font="Arial", .size=FS(metric),   .Justification=0,.Style=0,.angle=0, .X1=tx1+sp(metric), .Y1=rw3+sp(metric), .Z1=0
  322.             .ApplyName "Border"
  323.         endif
  324.  
  325.         if txtDrawnBy$<>"" then
  326.             .Text3D .text=txtDrawnBy$,  .font="Arial", .size=FS(metric),   .Justification=0,.Style=0,.angle=0, .X1=tx2+sp(metric), .Y1=rw3+sp(metric), .Z1=0
  327.             .ApplyName "Border"    
  328.         endif
  329.  
  330.         if txtDate$<>"" then
  331.             .Text3D .text=txtDate$,     .font="Arial", .size=FS(metric),   .Justification=0,.Style=0,.angle=0, .X1=tx1+sp(metric), .Y1=rw4+sp(metric), .Z1=0
  332.             .ApplyName "Border"
  333.         endif
  334.         
  335.         if txtCheckBy$<>"" then
  336.             .Text3D .text=txtCheckBy$,  .font="Arial", .size=FS(metric),   .Justification=0,.Style=0,.angle=0, .X1=tx2+sp(metric), .Y1=rw4+sp(metric), .Z1=0
  337.             .ApplyName "Border"
  338.         endif
  339.  
  340.         'GROUP ALL OBJECTS TOGETHER
  341.         if chkGroup% = 1 then
  342.             .selectobject "Border"
  343.             .group
  344.         endif
  345.  
  346.         .ZoomToAll
  347.         'CLOSE LINK WITH CORELCAD
  348.         end WithObject
  349.  
  350.     case 2 'CANCEL BUTTON
  351.         'NOTHING MORE TO DO
  352. end select
  353.  
  354.